home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc / Sample Code / Sample Editors⁄Viewers / Cappuccino / Source / RefCounted.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-11  |  1.3 KB  |  73 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        RefCounted.h
  3.  
  4.     Contains:    C++ mix-in class for doing reference counting.
  5.  
  6.     Written by:    Troy Gaul
  7.     
  8.     Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  9. */
  10.  
  11. #ifndef _REFCOUNTED_
  12. #define _REFCOUNTED_
  13.  
  14. //------------------------------------------------------------------------------
  15. // MRefCounted
  16. //------------------------------------------------------------------------------
  17.  
  18. class MRefCounted {
  19.  
  20. public:
  21.  
  22.     MRefCounted();
  23.     
  24.     virtual ~MRefCounted();
  25.     
  26.     virtual void Acquire();
  27.     
  28.     virtual void Release();
  29.     
  30.     virtual ODSLong GetRefCount();
  31.     
  32. private:
  33.  
  34.     ODSLong fRefCount;
  35.     
  36. };
  37.  
  38. //------------------------------------------------------------------------------
  39. // TempRefCounted
  40. //------------------------------------------------------------------------------
  41.  
  42. class TempRefCounted : Destructo {
  43.  
  44. public:
  45.  
  46.     TempRefCounted(MRefCounted*);
  47.     
  48.     virtual ~TempRefCounted();
  49.     
  50.     MRefCounted* operator=(MRefCounted*);
  51.  
  52.     void DontRelease();
  53.     
  54. private:
  55.  
  56.     // disallow these:
  57.     TempRefCounted();
  58.     TempRefCounted(const TempRefCounted&);
  59.     void operator=(const TempRefCounted&);
  60.  
  61.     MRefCounted* fObject;
  62.     
  63. };
  64.  
  65. //------------------------------------------------------------------------------
  66. // Debugging functions
  67. //------------------------------------------------------------------------------
  68. #if ODDebug
  69.     void CheckRefCountedObjects();
  70. #endif
  71.  
  72.  
  73. #endif